/**
在 Node.js 中， `node_modules`  文件夹是用于存放项目依赖模块的重要目录。理解 CommonJS 模块化与  `node_modules`  文件夹之间的关系对于管理和使用 Node.js 项目中的依赖非常重要。
一、模块解析过程
 1.  `require()`  函数
在 Node.js 中，使用  `require()`  函数来导入模块。该函数会按照一定的规则查找和解析模块。

 2. 模块查找顺序
当使用  `require()`  导入模块时，Node.js 会按照以下顺序查找模块：

1. 核心模块：首先检查是否是 Node.js 的核心模块（如  `fs` 、 `http`  等）。如果是，直接使用。

2. 文件模块：
   - 如果模块路径是相对路径（如  `./module`  或  `../module` ），Node.js 会尝试在当前文件的目录中查找对应的文件。
   - 如果模块路径是绝对路径，Node.js 会直接查找该路径。

3.  `node_modules`  文件夹：
   - 如果前两步都没有找到，Node.js 会在  `node_modules`  文件夹中查找模块。
   - Node.js 会从当前模块的目录开始，向上查找父目录，直到找到  `node_modules`  文件夹为止。

 3. 查找模块的具体步骤
假设有一个文件结构如下：
/project
  ├── app.js
  └── node_modules
      └── my-module
          └── index.js
在  `app.js`  中使用  `require('my-module')`  时，Node.js 的查找步骤如下：

1. 检查  `my-module`  是否是核心模块。
2. 检查当前目录（ `/project` ）下是否有  `my-module.js` 、 `my-module.json`  或  `my-module.node`  文件。
3. 在  `node_modules`  文件夹中查找  `my-module`  文件夹。
4. 如果找到  `my-module`  文件夹，Node.js 会查找该文件夹中的  `index.js`  文件并加载。

二、 `node_modules`  的结构
 1. 依赖树

 `node_modules`  文件夹通常包含项目的所有依赖模块及其子依赖。每个依赖都会有自己的  `node_modules`  文件夹，形成一个树状结构。

 2. 版本管理
在  `node_modules`  中，每个模块的版本可以不同，这使得不同的模块可以依赖于不同版本的同一模块。

 3.  `package.json`  文件
每个 Node.js 项目通常会有一个  `package.json`  文件，其中列出了项目的依赖项。使用  `npm install`  命令时，npm 会根据  `package.json`  中列出的依赖项安装相应的模块到  `node_modules`  中。

三、总结
-  `node_modules`  文件夹是 Node.js 项目中存放依赖模块的地方，模块的解析遵循一定的查找顺序。
- 使用  `require()`  导入模块时，Node.js 会先检查核心模块、文件模块，然后在  `node_modules`  中查找。
-  `node_modules`  中的模块可以形成树状结构，支持不同版本的依赖。
-  `package.json`  文件用于管理项目的依赖项，并在安装时指导 npm 下载相应的模块。

理解  `node_modules`  文件夹的解析过程，有助于更好地管理和使用 Node.js 项目中的依赖，提高开发效率。
 */

// require导入内置模块
// const fs = require('fs');
// const path = require('path');
// const http = require('http');
// console.log(fs);
// console.log(path);
// console.log(http);

// require导入第三方模块
// const axios = require('axios');
// console.log(axios);

const myModules = require('my-modules');
console.log(myModules);




